package com.easyidea.its.domain.service.base;

import java.io.Serializable;

/**
 * base serivce interface
 * 
 * @author davey.wu
 * 
 * @param <T>
 */
public interface BaseService<T> {
	/**
	 * 持久化对象，并返回带ID的对象
	 * @param <E>
	 * @param bean
	 * @return
	 */
	<E> E save(E bean);
	/**
	 * 持久化对象
	 * 
	 * @param <E>
	 * @param bean
	 */
	void saveOrUpdateBean(T bean);

	/**
	 * 持久化对象
	 * 
	 * @param <E>
	 * @param bean
	 */
	<E> void update(E bean);
	
	/**
	 * 逻辑删除对象
	 * 
	 * @param id
	 */
	void removeBeanByLogic(int id);
	
	/**
	 * 物理删除对象
	 * 
	 * @param id
	 */
	void removeBean(int id);
	
	

	/**
	 * 根据id获取相应的持久化对象
	 * 
	 * @param id
	 * @return
	 */
	T getBeanById(int id);

	/**
	 * 判断指定类的指定属性的值是否存在。
	 * 
	 * @param <E>
	 * @param clazz
	 * @param propertyName
	 * @param id
	 * @param isIncludeDeleted  true:包含删除的 false：不包含删除的
	 * @return
	 */
	boolean isRepeated(String propertyName,String propertyValue, Serializable id, boolean isIncludeDeleted);	
	

}
